package com.xiaochen.manager.test;

import com.xiaochen.model.entity.product.Category;

import java.util.ArrayList;
import java.util.List;

public class test4 {

    public static void main(String[] args){


    }

    // 1.在这个位置定义一个方法用来找到一个入口，确定从什么地方开始查询
    public static List<Category> buildTree(List<Category> categoryList){
        // 创建一个List集合用来封装返回数据
        List<Category> trees = new ArrayList<>();
        for(Category category : categoryList){
            // 在这个位置查询一下哪些数据符合下面这个条件parent_id = 0,因为这个递归的入口是parent_id = 0
            if (category.getParentId() == 0){
                // 调用这个方法来进行递归
                trees.add(findChildren(category,categoryList));
            }
        }
        return trees;
    }

    // 这个是一个递归的方法
    public static Category findChildren(Category category, List<Category> categoryList){
        // category里面有一个List<Category>集合是用来封装下一层数据,将这个集合创建出来
        category.setChildren(new ArrayList<>());
        for (Category category1 : categoryList){
            // 循环遍历categoryList，看看哪个是category的子节点
            if (category1.getParentId() == category.getId()){
                // 将这写符合的数据添加到category的children集合中
                // 循环遍历，全部设置进去
                category.getChildren().add(findChildren(category1,categoryList));
            }
        }
        // 最后将数据返回出去
        return category;
    }
}
